layui.config({
    base: 'plugins/layui/modules/'
});
layui.define(['layer', 'laypage', 'icheck'], function(exports) {
    "use strict";
    var $ = layui.jquery,
        layer = parent.layer === undefined ? layui.layer : parent.layer,
        laypage = layui.laypage;
    /**
     * @description begtable元素
     */
    var ELEM = {
        table: 'beg-table',
        hover: 'beg-table-hovered',
        border: 'beg-table-bordered',
        strip: 'beg-table-striped'
    };
    /**
     * @constructor begTable 构造函数
     */
    var begTable = function() {
        this.config = {
            elem: undefined, //存放begtable的窗口，必填
            bordered: false, //是否加边框
            striped: false, //是否显示斑马线
            hovered: false, //鼠标悬停样式
            checked: false, //显示多选按钮
            checkboxClass: 'icheckbox_flat-green', //checkbox样式
            tips: '这是默认Tips',
            columns: undefined, // 数据列
            url: undefined, //远程地址
            data: undefined, //数据
            identity: undefined, // 标识字段
            paged: true, //启用分页功能
            type: 'get', //远程读取数据的方式
            pageSet: {
                jump: undefined, //
                groups: 5,
            } //分页设置
        };
    };
    /**
     * @description 设置
     * @param {Object} options
     */
    begTable.prototype.set = function(options) {
        var that = this;
        $.extend(true, that.config, options);
        return that;
    };
    /**
     * @description 获取选择的行
     */
    begTable.prototype.getSelectedRows = function() {
        console.log(this.config.tips);
    };
    /**
     * 初始化begtable
     */
    begTable.prototype.init = function() {
        var _that = this;
        var _config = _that.config;
        var elem = _config.elem;
        if(typeof(elem) !== 'string' && typeof(elem) !== 'object') {
            throwError('elem参数未定义或设置出错，具体设置格式请参考文档API.');
        }
        var $container;
        if(typeof(elem) === 'string') {
            $container = $(elem);
        }
        if(typeof(elem) === 'object') {
            $container = elem;
        }
        if($container.length === 0) {
            throwError('找不到elem参数配置的容器，请检查.');
        }
        if(typeof(_config.columns) !== 'object') {
            throwError('请配置columns参数，具体设置格式请参考文档API');
        }
        var tableClass = ELEM.table;
        if(_config.bordered) {
            tableClass += ' ' + ELEM.border;
        }
        if(_config.hovered) {
            tableClass += ' ' + ELEM.hover;
        }
        if(_config.striped) {
            tableClass += ' ' + ELEM.strip;
        }
        var tableTemp = '<table class="' + tableClass + '">';
        var columns = _config.columns;
        var theadTemp = '<thead><tr>';
        //添加全选按钮
        if(_config.checked) {
            theadTemp += '<th style="width:25px;"><input type="checkbox" id="begtable-selected-all"></th>'
        }
        for(var i = 0; i < columns.length; i++) {
            theadTemp += '<th>' + columns[i].title + '</th>'
        }
        theadTemp += '</tr></thead>';
        var tbodyTemp = '<tbody>';
        var data = _config.data;
        if(data !== undefined && typeof(data) === 'object') {
            for(var i = 0; i < data.length; i++) {
                var tr = '<tr>';
                if(_config.checked) {
                    tr += '<td style="text-align: center;"><input type="checkbox" /></td>';
                }
                for(var j = 0; j < columns.length; j++) {
                    tr += '<td>' + data[i][columns[j].field] + '</td>';
                }
                tr += '</tr>';
                tbodyTemp += tr;
            }
        }
        tbodyTemp += '</tbody>';
        tableTemp = tableTemp + theadTemp + tbodyTemp + '</table>';
        //渲染table
        $container.html('<div class="beg-table-box"><div class="beg-table-body">' + tableTemp + '</div></div>');
        //checkbox
        if(_config.checked) {
            //渲染checkbox
            $container.find('input[type=checkbox]').iCheck({
                checkboxClass: _config.checkboxClass
            });
        }
        //分页
        if(_config.paged) {
            var $tableBox = $container.children('.beg-table-box');
            $tableBox.append('<div class="beg-table-paged"></div>');
            loadData($tableBox, 1);
        } else {
            $container.find('.' + ELEM.table).css('margin-bottom', '0px');
        }

        //msgErrorTips('请对begtable返回正确的JSON字符');
        return _that;
    };
    begTable.prototype.getConfig = function() {
        return this.config;
    };
    /**
     * 加载数据
     * @param {Object} $tableBox
     * @param {Number} page
     */
    function loadData($tableBox, page) {
        //var that = '';
		/*$.ajax({
		 type: that.config.type,
		 success: function(result) {

		 }
		 });*/
        laypage({
            cont: $tableBox.find('.beg-table-paged'),
            curr: page,
            pages: 25, //总页数
            groups: 5, //连续显示分页数
            jump: function(obj, first) {
                //得到了当前页，用于向服务端请求对应数据
                var curr = obj.curr;
                if(!first) {
                    //layer.msg('第 '+ obj.curr +' 页');
                    that.loadData()
                }
            }
        });
    }
    /**
     * 抛出一个异常错误信息
     * @param {String} msg
     */
    function throwError(msg) {
        throw new Error('betTable error:' + msg);
        return;
    }
    /**
     * 弹出一个错误提示
     * @param {String} msg
     */
    function msgErrorTips(msg) {
        layer.msg(msg, {
            icon: 5
        });
        return;
    }

    var begtable = new begTable();
    //begtable.init();

    exports('begtable', function(options) {
        return begtable.set(options);
    });
});